The disclosed subject matter related to techniques for improving the performance of mobile applications.
Certain mobile applications can be written in languages such as Java or .NET. Developers can write applications using languages such as Java or .NET, compile the application to a bytecode, and run the application on many platforms using a compatible Virtual Machine (VM). Languages such as Java or .NET permit developers to avoid certain low-level issues such as memory management. Furthermore, languages such as Java or NET can also provide portability and security features that, for example, enable browsers to run untrusted applets.
However, languages such as Java or .NET can also require a higher overhead than that is required by a native code. For example, bytecode interpretation can involve more than 10× reduction in speed compared to native execution. While existing technologies such as Just-in-time compilation (JIT) can improve performance by compiling bytecode to a native code format, JIT can take time to perform and reduce application response time. Furthermore, due to CPU and battery constraints in mobile environments and the need to respond to users quickly, certain existing technologies such as JIT can have reduced functionality, such as global optimizations. Furthermore, Ahead-of-time compilation (AOT) can be used instead of JIT. Due to lack of run-time information, the code produced by AOT can require more file system space than the original bytecode. As such, there exists a need for an improving the performance of mobile applications